home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / misc / flxc101.lha / flexcat / doc / FlexCat_english.doc < prev    next >
Encoding:
Text File  |  1993-11-19  |  30.0 KB  |  716 lines

  1. FlexCat V1.0 Documentation
  2. **************************
  3.  
  4.    This file describes the Usage of FlexCat V1.0, a program which generates
  5. catalogs and the source to handle them. FlexCat works similar to
  6. CatComp and KitCat, but differs in generating any source you want.
  7. This is done by using the so called Source descriptions, which are a
  8. template for the code to generate. They can be edited and hence adapted to
  9. any programming language and individual needs. (Hopefully!)
  10.  
  11. Copyright and other legal stuff
  12. *******************************
  13.  
  14.      Copyright (C) 1993    Jochen Wiedmann
  15.                  Am Eisteich 9
  16.                72555 Metzingen (Deutschland)
  17.                  Tel. 07123 / 14881
  18.                  Internet: wiedmann@mailserv.zdv.uni-tuebingen.de
  19.  
  20.    Permission is granted to make and distribute verbatim and modified
  21. copies of this documentation and the program FlexCat following the terms of
  22. the "GNU General Public License" provided the copyright notice and this
  23. permission notice are preserved on all copies and the "GNU General Public
  24. License" (in the file COPYING) is distributed as well.
  25.  
  26.    The author gives absolutely no warranty that the program described in
  27. this documentation and the results produced by it are correct. The author
  28. cannot be held responsible for any damage  resulting from the use of this
  29. software.
  30.  
  31. Survey
  32. ******
  33.  
  34.    Since Workbench 2.1 the Amiga offers a rather pleasant system of using
  35. programs in different languages: The locale.library. (This is called
  36. localizing, that's what the name's for.)
  37.  
  38.    The idea is simple: You select a language, the english in most cases and
  39. write your program in the same manner as you did without localizing, except
  40. that constant strings are replaced by certain function calls. Another
  41. function call makes it possible that the user selects another language when
  42. the program starts. (The latter function call loads an external file, the
  43. so called catalog and makes the former to read the strings from the
  44. catalog instead of using the predefined strings.)
  45.  
  46.    These catalogs are independent from the program. All you need to do for
  47. adding another language is to create a new catalog file and this is
  48. possible at any time without changing the program.
  49.  
  50.    But there are additional tasks for the programmer: He needs to create the
  51. catalogs, the predefined strings and some source to handle them all. (The
  52. functions that are mentioned above.) FlexCat is designed to make this in an
  53. easy and nearly automatic manner without losing flexibility especially in
  54. creating the source. Using catalogs with FlexCat works like this:
  55.  
  56.   1. You start by creating a file containing the predefined strings and and
  57.      their description: The catalog description. The description consists
  58.      of the string itself, an identifier which is used in the program in
  59.      place of the string and informations on the strings minimal and maximal
  60.      length. See Catalog description.
  61.  
  62.   2. A source description file is used to create source from the catalog
  63.      description: This is a template file containing certain patterns which
  64.      are substituted with predefined values, for example the strings.  This
  65.      source description can be edited and hence adapted to any programming
  66.      language and any individual needs. Some source descriptions (Assembler,
  67.      Oberon and C, the latter allowing localizing under 2.0 or 2.1 and
  68.      above) are already part of the FlexCat distribution. These can be used
  69.      as examples or as they are without any further thinking. See Source
  70.      description.
  71.  
  72.   3. Using FlexCat you create a so called catalog translation file for
  73.      every additional language. These are very similar to the catalog
  74.      description except that they contain empty lines instead of the strings
  75.      and miss the string description which is still part of the catalog
  76.      description. All you need to do is replace the empty lines with the
  77.      respective strings in the new language. FlexCat makes this easy by
  78.      adding the original strings as comment lines, hence it is clear, what
  79.      words you should insert. Finally FlexCat is used again to create a
  80.      catalog file from the catalog description and the catalog
  81.      translation. (This can be done at any time, even if the program is
  82.      finished without any changes.) See Catalog translation.
  83.  
  84. Installation
  85. ************
  86.  
  87.    FlexCat is written in pure Ansii-C (except for the localization), hence
  88. it should run on any Amiga and hopefully on other machines after
  89. recompiling.  (The localizing is commented out in that case.) This holds
  90. for the created programs too: FlexCat is written using itself. All
  91. distributed source descriptions should create programs running on any Amiga
  92. and even any machine. (Of course you must ensure that the variable
  93. LocaleBase has the value NULL in the latter case.) Localizing, however,
  94. is possible beginning with Workbench 2.1 because the locale.library isn't
  95. available below.
  96.  
  97.    It is not impossible to offer localizing without the locale.library:
  98. The source description files C_c_V20.sd and C_h_V20.sd give an example,
  99. where the iffparse.library is used to replace the locale.library, if it
  100. is not available. This gives Localizing for Workbench 2.0. See C.
  101.  
  102.    Installing FlexCat is simple: Just copy the program to a directory in
  103. your search path and select a place for the source descriptions you need.
  104. (These are the files called something like xx_yy.sd, where xx is the
  105. programming language.) If you want to use FlexCat in another language than
  106. the english you need to copy the respective catalog files too. For the
  107. german language for example (actually this is the only one available) copy
  108. the file Catalogs/Deutsch/FlexCat.catalog to
  109. Locale:Catalogs/Deutsch/FlexCat.catalog or to
  110. PROGDIR:Catalogs/Deutsch/FlexCat.catalog, where PROGDIR: is
  111. FlexCat's program directory. See Using FlexCat source.
  112.  
  113. Calling FlexCat from the CLI
  114. ****************************
  115.  
  116.    FlexCat is a CLI based program and doesn't operate from the workbench.
  117. It's calling syntax is
  118.          FlexCat CDFILE/a,CTFILE,CATALOG/k,NEWCTFILE/k,SOURCES/m
  119.  
  120. where the arguments mean
  121. CDFILE
  122.      is the name of a catalog description to be read. This is always needed.
  123.      Please not, that the base name of the source description is created
  124.      from it end hence this is case significant. See Source description.
  125.  
  126. CTFILE
  127.      is the name of a catalog translation file to be read. This is needed
  128.      for creating catalogs or for updating an old catalog translation file
  129.      using the NEWCTFILE argument: FlexCat reads the old file and the
  130.      catalog description and creates a new catalog translation file
  131.      containing the old strings and possibly some empty lines for new
  132.      strings.
  133.  
  134. CATALOG
  135.      is the name of a catalog file to be created. This argument requires
  136.      giving CDFILE as well.
  137.  
  138. NEWCTFILE
  139.      is the name of a catalog translation file to create. FlexCat reads
  140.      strings from CTFILE, if this is given, strings missing in the catalog
  141.      translation are replaced by empty lines. (The new catalog translation
  142.      will contain only empty lines as strings, if CTFILE is omitted.)
  143.  
  144. SOURCES
  145.      are the names of source files to be created. These shoud be given in
  146.      the form source=template where source is the file to create and
  147.      template is the name of a source description file to be scanned.
  148.  
  149.    An example:
  150.          FlexCat Prog.cd NEWCTFILE NewCatalog.ct prog_cat.c=C_c_V21.sd
  151.  
  152. reads the catalog description Prog.cd and creates the catalog translation
  153. NewCatalog.ct and the source file prog_cat.c from it. The latter is
  154. created using the source description file C_c_V21.sd. The base name of
  155. the source description is Prog.  (Please not the uppercase letter!)
  156.  
  157. Catalog description files
  158. *************************
  159.  
  160.    A catalog description file contains four kinds of lines.
  161.  
  162. Comment lines
  163.      Any line beginning with a semicolon is assumed to be a comment line and
  164.      hence ignored. (The string lines below are an exception. These may
  165.      begin with a semicolon.)
  166.  
  167. Command lines
  168.      Any line beginning with a '#' (with the same exception as above) are
  169.      assumed to be command lines. Possible commands are:
  170.     #language <str>
  171.           gives the programs default language, the language of the strings
  172.           in the catalog description. Default is #language english.
  173.  
  174.     #version <num>
  175.           gives the version number of catalogs to be opened. Note that this
  176.           number must be exact and not same or higher as in
  177.           `Exec.OpenLibrary'.  An exception is the number 0, which accepts
  178.           any catalog. Default is #version 0. See Locale.OpenCatalog
  179.           for further information on catalog language and version.
  180.  
  181.     #lengthbytes <num>
  182.           Instructs FlexCat to put the given number of bytes before a
  183.           string containing its length. The length is the number of bytes
  184.           in the string without length bytes and a trailing NUL byte.
  185.           (Catalog files and hence catalog strings will have a trailing
  186.           NUL byte. This is not always true for the default strings,
  187.           depending on the source description file.) <num> must be lower
  188.           or equal sizeof(long), that is lower or equal four. Default is
  189.           #lengthbytes 0.
  190.  
  191.     #basename <str>
  192.           Sets the basename of the source description. See Source
  193.           description.  This overwrites the basename from the command line
  194.           argument CDFILE.  See Program start.  Commands are case
  195.      insensitive.
  196.  
  197. Description lines
  198.      declare a string. They look like IDSTR (id/minlen/maxlen) where
  199.      IDSTR is a identifier (a string constisting of the characters
  200.      a-z,A-Z and 0-9), id is a unic number (from now on called as ID),
  201.      minlen and maxlen are the strings minimum and maximum length,
  202.      respectively. The latter three may be missing (but not the characters
  203.      (//)!) in which case FlexCat chooses a number and makes no
  204.      restrictions on the string length.  Better don't use the ID's, if you
  205.      don't need. The lines following are the
  206.  
  207. String lines
  208.      containing the string itself and nothing else. These may contain
  209.      certain control characters beginning with a backslash:
  210.     \b
  211.           Backspace (Ascii 8)
  212.  
  213.     \c
  214.           Control Sequence Introducer (Ascii 155)
  215.  
  216.     \e
  217.           Escape (Ascii 27)
  218.  
  219.     \f
  220.           Form Feed (Ascii 12)
  221.  
  222.     \g
  223.           Display beep (Ascii 7)
  224.  
  225.     \n
  226.           Line Feed, newline (Ascii 10)
  227.  
  228.     \r
  229.           Carriage Return (Ascii 13)
  230.  
  231.     \t
  232.           Tab (Ascii 9)
  233.  
  234.     \v
  235.           Vertical tab (Ascii 11)
  236.  
  237.     \)
  238.           The trailing bracket which is possibly needed as part of a
  239.           (..) sequence, see Source description.
  240.  
  241.     \\
  242.           The backslash itself
  243.  
  244.     \xHH
  245.           The character given by the ascii code HH, where HH are hex
  246.           digits.
  247.  
  248.     \OOO
  249.           The character given by the ascii code OOO, where OOO are octal
  250.           digits.  Finally a single backslash at the end of the line causes
  251.      concatening the following line. This makes it possible to use strings
  252.      of any length, FlexCat makes no assumptions on string length.
  253.  
  254.    A string is hence given by a description line and the following string
  255. line.  Let's see an example:
  256.          msgHello (/4/)
  257.          Hello, this is english!\n
  258.  
  259. The ID is missing here, so FlexCat chooses a suitable number. The number 4
  260. instructs FlexCat, that the following string must not have less than four
  261. characters and it may be of any length. See the file FlexCat.cd for a
  262. further example.
  263.  
  264. Catalog translation files
  265. *************************
  266.  
  267.    Catalog translation files are very similar to catalog descriptions,
  268. except that for other commands and having no informations on string ID and
  269. length.  (These are taken from the catalog description.) Of any string from
  270. the catalog description must be present (However, FlexCat omits writing
  271. strings into the catalog which are identical to the default string.) and no
  272. additional identifiers may occur. This is easy assured by using FlexCat to
  273. create new catalog translation files. See Program start.
  274.  
  275.    The commands allowed in catalog translations are:
  276. ##version <str>
  277.      Gives the catalog version as AmigaDOS version string. Example:
  278.               ##version $VER: Deutsch.ct 8.1 (27.09.93)
  279.      The version number of this catalog is 8. Hence the catalog descriptions
  280.      version number must be 0 or 8.
  281.  
  282. ##language <str>
  283.      The catalogs language. Of course this should be another language than
  284.      the catalog descriptions language. The ##language and ##version
  285.      commands must be present in a catalog translation.
  286.  
  287. ##codeset <num>
  288.      Currently not used, must be 0. This is the default value.
  289.  
  290.    The string from above looks like this in the catalog translation:
  291.          msgHello
  292.          Hallo, dies ist deutsch!\n
  293.  
  294. See Deutsch.ct as further example of a catalog translation.
  295.  
  296. Source description files
  297. ************************
  298.  
  299.    This is the special part of FlexCat. Until now there is nothing that
  300. CatComp, KitCat and others don't offer too. The created source should make
  301. it easy to use the catalogs without loosing flexibility. Any programming
  302. language should be possible and any requirements should be satisfyable.
  303. This seems like a cantradiction, but FlexCat's solution are the source
  304. description files containing a template of the source to be created. These
  305. are editable as the catalog description and catalog translation files are,
  306. hence FlexCat can create any code.
  307.  
  308.    The source descriptions are searched for certain symbols which are
  309. replaced by certain values. Possible symbols are the backslash characters
  310. from above and additionally sequences beginning with a %. (This is well
  311. known for C programmers.)
  312. %b
  313.      is the base name of the catalog description. See Program start.
  314.  
  315. %v
  316.      is the version number of the catalog description. Don't mix this up
  317.      with the catalog version string from the catalog translation.
  318.  
  319. %l
  320.      is the catalog descriptions language. Please note, that this is
  321.      inserted as a string. See %s below.  below.
  322.  
  323. %n
  324.      is the number of strings in the catalog description.
  325.  
  326. %%
  327.      is the character % itself.
  328.  
  329.    But the most important thing are the following seqences. These represent
  330. the catalog strings in different ways Lines containing one or more of these
  331. symbols are repeated for any String.
  332.  
  333. %i
  334.      is the identifier from the catalog description.
  335.  
  336. %d
  337.      is the strings ID.
  338.  
  339. %s
  340.      is the string itself; this will be inserted in a way depending on the
  341.      programming language and can be controlled using the commands
  342.      ##stringtype and ##shortstrings.
  343.  
  344. %(...)
  345.      inserts the text between the brackets for any string except the last.
  346.      This is probably needed in Arrays, if the array entries should be
  347.      separated by commas, but the last entry must not be followed by a
  348.      comma. You can use %(,) in that case. Note that within the brackets
  349.      there is no replacing of % sequences. Backslash sequences, however,
  350.      are still allowed.
  351.  
  352.    The control sequences %l and %s create strings. But how strings look
  353. depends on the program language. That's why the source description allows
  354. command lines similar to the catalog translation. These must begin with the
  355. first character of the line and any command must have its own line.
  356. Possible commands are:
  357. ##shortstrings
  358.      makes longer strings to be splitted on different lines. This is
  359.      probably not always possible or not implemented into FlexCat and hence
  360.      the default is to create one, probably very long string.
  361.  
  362. ##stringtype <type>
  363.      Tells FlexCat how strings should look like. Possible types are
  364.     None
  365.           No additional characters are created. An image of the string is
  366.           inserted and nothing else. No output of binary characters (the
  367.           backslash sequences) is possible.
  368.  
  369.     C
  370.           creates strings according to C. The strings are preceded and
  371.           followed by the character ". Strings are splitted using the
  372.           sequences "\ at the end of the line and " at the beginning of
  373.           the new line. (The backslash is needed in macros.) Binary
  374.           characters are inserted using \OOO. See C.
  375.  
  376.     Oberon
  377.           is like string type C, except for the trailing backslash at the
  378.           end of the line.
  379.  
  380.     Assembler
  381.           Strings are created using dc.b. Readable ascii characters are
  382.           preceded and followed by the character ', binary characters are
  383.           inserted as $XX. See Assembler.
  384.  
  385.    Let's look at an excerpt from the file C_h.sd creating an include file
  386. for the programming language C.
  387.      ##stringtype C
  388.      ##shortstrings
  389.      
  390.      #ifndef %b_CAT_H    /*    Assure that this is read only once. */
  391.      #define %b_CAT_H
  392.      
  393.      
  394.      /*  Get other include files    */
  395.      #include <exec/types.h>
  396.      #include <libraries/locale.h>
  397.      
  398.      
  399.      /*  Prototypes    */
  400.      extern void Open%bCatalog(struct Locale *, STRPTR);
  401.      extern void Close%bCatalog(void);
  402.      extern STRPTR Get%bString(LONG);
  403.      
  404.      /*  Definitions of the identifiers and their ID's           */
  405.      /*  This line will be repeated for any string.            */
  406.      #define %i %d
  407.      
  408.      #endif
  409.  
  410. Including FlexCat source in own programs
  411. ****************************************
  412.  
  413.    Of course this depends on how the source is created and hence on the
  414. source description. What we are talking here about are the source
  415. description files distributed with FlexCat. See Source description.
  416.  
  417.    All source descriptions should allow using the program without
  418. locale.library. However, a globale variable called LocaleBase
  419. (_LocaleBase for assembler) must be present and ininitialized with
  420. NULL or by a call to `Exec.OpenLibrary'. No localizing is possible in the
  421. former case except when using the source description C_c_V20.sd.  This
  422. allows localizing on 2.0 by repacing the locale.library with the
  423. iffparse.library. (A variable IFFParseBase has to be present for
  424. this and initialized LocaleBase.) See C.  The programmer does not need
  425. knowledge of these libraries except when creating own source descriptions.
  426.  
  427.    There are three functions and calling them is rather simple.
  428.  
  429.  - : OpenCatalog (locale, language)
  430.      This function possibly opens a catalog. The argument locale is a
  431.      pointer to a Locale structure amd language is a string containing
  432.      the name of the language that should be opened. In most cases these
  433.      should both be NULL or NIL, respectively, because the user's
  434.      defaults are overwritten otherwise. See `Locale.OpenCatalog' for
  435.      details.
  436.  
  437.      If the user has Deutsch and Francais as default languages and the
  438.      programs base name is XXX this looks for the following files:
  439.               PROGDIR:Catalogs/Deutsch/XXX.catalog
  440.               LOCALE:Catalogs/Deutsch/XXX.catalog
  441.               PROGDIR:Catalogs/Francais/XXX.catalog
  442.               LOCALE:Catalogs/Francais/XXX.catalog
  443.  
  444.      where PROGDIR: is the programs current directory. (The order of
  445.      PROGDIR: and LOCALE: can be changed to suppress a requester
  446.      like Insert volume YYY.
  447.  
  448.      OpenCatalog is of type void (a procedure for Pascal programmers) and
  449.      hence gives no result.
  450.  
  451.  - : GetString (ID)
  452.      Gives a pointer to the string with the given ID from the catalog
  453.      description.  Of course these strings are owned by locale.library
  454.      and must not be modified.
  455.  
  456.      An example might be useful. Take the string from the catalog
  457.      description example, which was called msgHello. The source
  458.      descriptions declare a constant msgHello representing the ID. This
  459.      could be printed in C using
  460.               printf("%s\n", GetString(msgHello));
  461.  
  462.  - : CloseCatalog (void)
  463.      This function frees the catalog (that is the allocated RAM) before
  464.      terminating the program. You can call this function at any time even
  465.      before OpenCatalog is called.
  466.  
  467. FlexCat source in C programs
  468. ============================
  469.  
  470.    C source consists of two parts: A .c file which should be compiled and
  471. linked without further notice and an include file which should be included
  472. from any source part using catalog strings and which defines the IS's as
  473. macros using #define.
  474.  
  475.    Two different versions are available for the .c part: C_c_V21.sd is
  476. a rather simple version using the respective functions of the
  477. locale.library and allowing localizing beginning with Workbench 2.1.
  478. But C_c_V20.sd replaces the locale.library with the
  479. iffparse.library if the former isn't available and the latter is.
  480. This allows localizing for Workbench 2.0 too. Programs using this should
  481. have an option Language and give the corresponding argument to
  482. OpenCatalog. This option should not be used in 2.1 and above and
  483. hence the language argument of OpenCatalog should still be NULL.
  484.  
  485.    Of course it would be possible to write a third version using catalogs
  486. with Ansii C, but I don't want to support 1.3 anymore.
  487.  
  488.    To separate the FlexCat functions OpenCatalog and CloseCatalog from
  489. the corresponding Locale functions with the same names and to allow
  490. different catalogs in one program the FlexCat functions get slightly
  491. modified names here: OpenXXXCatalogCloseXXXCatalog and
  492. GetXXXString, where XXX is the base name from the source
  493. description. The concept is copied from the GadToolsBox and prooved good,
  494. as I think. See Source description.
  495.  
  496.    The function prototypes are:
  497.          void OpenXXXCatalog(struct Locale *loc, char *language);
  498.          STRPTR GetXXXString(ULONG);
  499.          void CloseXXXCatalog(void);
  500.  
  501.    Finally an example of a program using FlexCat:
  502.          #include <stdio.h>
  503.          #include <stdlib.h>
  504.          #include <XXX.h>        /*    Including this is a must!    */
  505.          #include <clib/exec_protos.h>
  506.      
  507.          /*    Open the library for yourself, even if the compiler    */
  508.          /*    supports automatic opening.                */
  509.          struct Library *LocaleBase;
  510.      
  511.          void main(int argc, char *argv[])
  512.      
  513.          {
  514.            LocaleBase = OpenLibrary("locale.library", 38);
  515.            /*  NO exit, if OpenLibrary fails and you don't need      */
  516.            /*  Locale functions elsewhere.                */
  517.            OpenXXXCatalog(NULL, NULL);
  518.      
  519.            ...   /*    other functions         */
  520.      
  521.            printf("%s\n", GetXXXString(msgHello));
  522.      
  523.            ...   /*    other functions again       */
  524.      
  525.            CloseXXXCatalog();
  526.            if (LocaleBase)
  527.            CloseLibrary(LocaleBase);
  528.          }
  529.  
  530. FlexCat source in Oberon programs
  531. =================================
  532.  
  533.    There are two different source descriptions: Oberon_V38.sd creates
  534. source using Locale.mod from Hartmut Goebel. Oberon_V39.sd creates
  535. source using the Locale.mod distributed with AmigaOberon.
  536.  
  537.    The function prototypes are
  538.          XXX.OpenCatalog(loc: Locale.LocalePtr; language : ARRAY OF CHAR);
  539.          XXX.GetString(num: LONGINT): Exec.StrPtr;
  540.          XXX.CloseCatalog();
  541.  
  542. where XXX is the basename from the source description.  See Source
  543. description.
  544.  
  545.    Finally an example using FlexCat source:
  546.          MODULE Anything;
  547.      
  548.          IMPORT  x:=XXX; Dos;
  549.      
  550.          BEGIN
  551.            x.OpenCatalog(NIL, "");
  552.      
  553.            ... (* Other functions    *)
  554.      
  555.            Dos.PrintF("%s\n", x.GetString(x.msgHello));
  556.      
  557.            ... (* other functions again                      *)
  558.            (* Catalog will be closed automatically       *)
  559.            (* when program exits.                        *)
  560.          END Anything;
  561.  
  562. FlexCat source in Assembler programs
  563. ====================================
  564.  
  565.    Assembler source is created for usage with the Aztec Assembler.  This
  566. should not be very different to other assemblers and you should be able to
  567. implement own source descriptions. The source consists of two parts: A
  568. .asm file which should be assembled and linked without further notice
  569. and an .i include file which defines the string ID's and must be included
  570. by the using program.
  571.  
  572.    The FLexCat-function names are slightly modified to allow the usage of
  573. different catalogs in one file: These are OpenXXXCatalog,
  574. CloseXXXCatalog and GetXXXString, where XXX is the base name from
  575. the source description. The concept is copied from the GadToolsBox and
  576. prooved good, as I think. See Source description.
  577.  
  578.    As usual the function result is given in d0 and the functions save
  579. registers d2-d7 and a2-a7. OpenCatalog expects its arguments in a0 (pointer
  580. to Locale structure) and a1 (Pointer to language string) which should be
  581. NULL in most cases. GetString expects an string ID in d0.
  582.  
  583.    Finally an example of a program using FLexCat source:
  584.          include "XXX.i" ; Opening this is a must. This
  585.                  ; contains "xref OpenXXXCatalog",...
  586.      
  587.          xref    _LVOOpenLibrary
  588.          xref    _LVOCloseLibrary
  589.          xref    _AbsExecBase
  590.      
  591.          dseg
  592.      LocNam: dc.b    "locale.library",0
  593.          dc.l    _LocaleBase,4        ; Must be present under this name
  594.      
  595.          cseg
  596.      
  597.      main:    move.l    #38,d0            ; Open locale.library
  598.          lea    LocName,a1
  599.          move.l    _AbsExecBase.a6
  600.          jsr    _LVOOpenLibrary(a6)
  601.      *   NO exit, if OpenLibrary fails and you don't need Locale
  602.      *   functions elsewhere
  603.      
  604.          move.l    #0,a0            ; Open catalog
  605.          move.l    #0,a1
  606.          jsr    OpenXXXCatalog
  607.      
  608.          ...                ; other functions
  609.      
  610.          move.l    #msgHello,d0        ; Get pointer to string
  611.          jsr    GetXXXString
  612.          jsr    PrintD0         ; and print it
  613.      
  614.          ...                ; other functions again
  615.      
  616.      Ende:
  617.          jsr    CloseXXXCatalog     ; Close Catalog
  618.          move.l    _LocaleBase,a1        ; Close locale.library
  619.          move.l    a1,d0            ; this test is a must for 1.3
  620.          beq    Ende1
  621.          jsr    CloseLibrary
  622.      Ende1:
  623.          rts
  624.          end
  625.  
  626. Further development of FlexCat
  627. ******************************
  628.  
  629.    I don't expect much further development for I think FlexCat to be rather
  630. complete. Of course I'm open for suggestions, tips or critics. Especially I
  631. offer to include new string types because this is possible with very minor
  632. changes.
  633.  
  634.    I would be pleased, if someone would send me new source descriptions and
  635. I could introduce them into further distributions. Any programming language,
  636. any extensions depending testing the source in a real existing program.
  637. And I would appreciate receiving new catalogs. It is enough to insert the
  638. strings in the file NewCatalogs.ct which is part of the distribution.
  639.  
  640. Credits
  641. *******
  642.  
  643.    My thanks go to:
  644. Albert Weinert
  645.      for KitCat, the predecessor of FlexCat which has done me valuable
  646.      things, but finally wasn't flexible enough.
  647.  
  648. Reinhard Spisser und Sebastiano Vigna
  649.      for the Amiga version of texinfo. This documentation is written using
  650.      it.
  651.  
  652. The Free Software Foundation
  653.      for the original version of texinfo and many other excellent software.
  654.  
  655. Matt Dillon
  656.      for DICE and especially for DME.
  657.  
  658. Alessandro Galassi
  659.      for the italian catalog.
  660.  
  661. The people of #AmigaGer
  662.      for answering many stupid questions and lots of fun, for example
  663.      PowerStat (Kai Hoffmann), ZZA (Bernhard Moellemann), Stargazer (Petra
  664.      Zeidler), stefanb (Stefan Becker), Tron (Mathias Scheler) and ill
  665.      (Markus Illenberger).
  666.  
  667. Commodore
  668.      for the Amiga and Kickstart 2.0. Keep on developing it and I'll be an
  669.      Amiga-user for the next 8 years too. ;-)
  670.  
  671. Index
  672. *****
  673.  
  674.  
  675.  
  676.  .cd                                    Catalog description
  677.  .ct                                    Catalog translation
  678.  .sd                                    Source description
  679.  Adress                                 Disclaimer
  680.  Ascii-Code                             Catalog description
  681.  Assembler                              Assembler
  682.  Author                                 Disclaimer
  683.  AztecAs_asm.sd                         Assembler
  684.  AztecAs_i.sd                           Assembler
  685.  C                                      C
  686.  Catalog description                    Catalog description
  687.  Catalog translation                    Catalog translation
  688.  CLI                                    Program start
  689.  Contributions                          Future
  690.  Control characters                     Catalog description
  691.  Copyright                              Disclaimer
  692.  Credits                                Credits
  693.  C_c_V20.sd                             C
  694.  C_c_V21.sd                             C
  695.  C_h.sd                                 C
  696.  Deutsch.ct                             Catalog translation
  697.  Distribution                           Disclaimer
  698.  FlexCat                                Future
  699.  FlexCat source                         Using FlexCat source
  700.  FlexCat.cd                             Catalog description
  701.  Future                                 Future
  702.  Installation                           Installation
  703.  Internet                               Disclaimer
  704.  Mail                                   Disclaimer
  705.  Oberon                                 Oberon
  706.  Oberon_V38.sd                          Oberon
  707.  Oberon_V39.sd                          Oberon
  708.  Permissions                            Disclaimer
  709.  Prohibitions                           Disclaimer
  710.  Requirements                           Installation
  711.  Source description                     Source description
  712.  Survey                                 Survey
  713.  Using FlexCat source                   Using FlexCat source
  714.  Workbench                              Program start
  715.  
  716.